LL_DMA2D_Init and LL_DMA2D_DeInit APIs migration

The LL initialization and de-initialization functions previously available in the stm32tnxx_ll_dma2d.c files within HAL1 are no longer present in HAL2. In HAL2, all LL C files ( stm32tnxx_ll_dma2d.c) have been removed, leaving only the LL header files ( stm32tnxx_ll_dma2d.h) that contain static inline functions.

If users need to initialize or de-initialize DMA2D using the LL layer, use the following method:

  • Replace manually the initialization and de-initialization functions : Replace the LL_DMA2D_Init and LL_DMA2D_DeInit functions manually with equivalent sequences using the static inline functions provided in the stm32tnxx_ll_dma2d.h file, tailored to their specific configuration and requirements.

This approach ensures that the initialization and de-initialization sequences are precisely addressing the given use case based on the LL static inline functions provided in the stm32tnxx_ll_dma2d.h header file. The sequences offer improved footprint optimization compared to the previous LL initialization functions found in stm32tnxx_ll_dma2d.c.

Related concept: Remove stm32tnxx_ll_ppp.c files

Replace manually the initialization and de-initialization functions

LL_DMA2D_Init() API migration

HAL1 / HAL2

DMA2D memory-to-memory transfer

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_M2M);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);
LL_DMA2D_FGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_FGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_FGND_SetAlpha(DMA2D, 0);
LL_DMA2D_FGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_FGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);

DMA2D memory-to-memory transfer with pixel format conversion

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_M2M_PFC);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);
LL_DMA2D_FGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_FGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_FGND_SetAlpha(DMA2D, 0);
LL_DMA2D_FGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_FGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);

DMA2D register-to-memory transfer

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_R2M);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);

DMA2D memory-to-memory with blending transfer

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_M2M_BLEND);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);
LL_DMA2D_FGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_FGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_FGND_SetAlpha(DMA2D, 0);
LL_DMA2D_FGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_FGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);
LL_DMA2D_BGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_BGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_BGND_SetAlpha(DMA2D, 0);
LL_DMA2D_BGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_BGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_BGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);

DMA2D memory-to-memory with blending and fixed color foreground transfer

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);
LL_DMA2D_FGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_FGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_FGND_SetAlpha(DMA2D, 0);
LL_DMA2D_FGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_FGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);
LL_DMA2D_BGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_BGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_BGND_SetAlpha(DMA2D, 0);
LL_DMA2D_BGND_SetLineOffset(DMA2D, 0);

DMA2D memory-to-memory with blending and fixed color background transfer

/* DMA2D init configuration */
LL_DMA2D_SetMode(DMA2D, LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG);
LL_DMA2D_SetOutputColorMode(DMA2D, LL_DMA2D_OUTPUT_MODE_ARGB8888);
LL_DMA2D_SetLineOffset(DMA2D, 0);
LL_DMA2D_SetLineOffsetMode(DMA2D, LL_DMA2D_LINE_OFFSET_PIXELS);
LL_DMA2D_SetOutputSwapMode(DMA2D, LL_DMA2D_SWAP_MODE_REGULAR);
LL_DMA2D_FGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_FGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_FGND_SetAlpha(DMA2D, 0);
LL_DMA2D_FGND_SetLineOffset(DMA2D, 0);
LL_DMA2D_FGND_SetRBSwapMode(DMA2D, LL_DMA2D_RB_MODE_REGULAR);
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D, LL_DMA2D_ALPHA_REGULAR);
LL_DMA2D_BGND_SetColorMode(DMA2D, LL_DMA2D_INPUT_MODE_ARGB8888);
LL_DMA2D_BGND_SetAlphaMode(DMA2D, LL_DMA2D_ALPHA_MODE_NO_MODIF);
LL_DMA2D_BGND_SetAlpha(DMA2D, 0);
LL_DMA2D_BGND_SetLineOffset(DMA2D, 0);

LL_DMA2D_DeInit() API migration

Note

For other DMA2D instances and/or series, modify the LL_AHBx_GRPx and LL_AHBx_GRPx defines as needed according to the target series.

Comparison of HAL1 and HAL2

HAL1

HAL2

Case of DMA2D

LL_DMA2D_DeInit(&DMA2D);
LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2D);
LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2D);